package com.jcj.jcjconfig.client.config;

import com.jcj.jcjconfig.client.repository.JcjRepository;
import com.jcj.jcjconfig.client.repository.JcjRepositoryChangeListener;
import org.springframework.context.ApplicationContext;

import java.util.Map;

public interface JcjConfigService extends JcjRepositoryChangeListener {
    static JcjConfigService getDefault(ApplicationContext applicationContext, ConfigMeta meta) {
        JcjRepository repository = JcjRepository.getDefault(applicationContext, meta);
        Map<String, String> config = repository.getConfig();
        JcjConfigService configService = new JcjConfigServiceImpl(applicationContext, config);
        repository.addListener(configService);
        return configService;
    }

    String[] getPropertyNames();

    String getProperty(String name);
}
